package models

// CardScenario 卡场景信息
type CardScenario struct {
	ID   int64  `json:"id"`   // 场景ID
	Name string `json:"name"` // 场景名称
}

// CardScenarioResponse 卡场景响应
type CardScenarioResponse struct {
	Ret    bool                    `json:"ret"`    // 是否成功
	Status int                     `json:"status"` // 状态码
	Data   map[string]CardScenario `json:"data"`   // 场景信息
}

// CardBinRange 卡头信息
type CardBinRange struct {
	Code      string         `json:"code"`       // 卡头
	ChannelID int64          `json:"channel_id"` // 通道ID
	AreaID    int            `json:"area_id"`    // 区域ID
	Type      int            `json:"type"`       // 类型
	IsGroup   int            `json:"is_group"`   // 是否分组
	Business  []CardScenario `json:"business"`   // 适用范围
}

// CardBinRangeResponse 卡头响应
type CardBinRangeResponse struct {
	Ret    bool           `json:"ret"`    // 是否成功
	Status int            `json:"status"` // 状态码
	Data   []CardBinRange `json:"data"`   // 卡头信息列表
}

// Channel 通道信息
type Channel struct {
	ID   int64  `json:"id"`   // 通道ID
	Name string `json:"name"` // 通道名称
}

// ChannelListResponse 通道列表响应
type ChannelListResponse struct {
	Ret    bool      `json:"ret"`    // 是否成功
	Status int       `json:"status"` // 状态码
	Data   []Channel `json:"data"`   // 通道列表
}

// CardHolderRequest 持卡人创建请求
type CardHolderRequest struct {
	FirstName      string `json:"first_name"`       // 持卡人名字
	MiddleName     string `json:"middle_name"`      // 中间名字
	LastName       string `json:"last_name"`        // 持卡人姓
	Email          string `json:"email"`            // 邮箱
	MobilePrefix   string `json:"mobile_prefix"`    // 手机号前缀
	Mobile         string `json:"mobile"`           // 手机号
	BirthDate      string `json:"birth_date"`       // 出生日期
	BillingCity    string `json:"billing_city"`     // 账单城市
	BillingAddress string `json:"billing_address"`  // 账单地址
	BillingZipCode string `json:"billing_zip_code"` // 账单邮编
	Remark         string `json:"remark"`           // 备注
	ChannelID      int64  `json:"channel_id"`       // 渠道id
	CountryCode    int    `json:"country_code"`     // 账单国家代码
	BillingState   string `json:"billing_state"`    // 账单省/州
}

// CardHolderResponse 持卡人创建响应
type CardHolderResponse struct {
	Ret    bool `json:"ret"`    // 业务结果
	Status int  `json:"status"` // 状态码
	Data   struct {
		FirstName      string `json:"first_name"`       // 持卡人名字
		MiddleName     string `json:"middle_name"`      // 中间名字
		LastName       string `json:"last_name"`        // 持卡人姓
		Email          string `json:"email"`            // 邮箱
		MobilePrefix   string `json:"mobile_prefix"`    // 手机号前缀
		Mobile         string `json:"mobile"`           // 手机号
		BirthDate      string `json:"birth_date"`       // 出生日期
		CountryCode    int    `json:"country_code"`     // 账单国家代码
		BillingState   string `json:"billing_state"`    // 账单省/州
		BillingCity    string `json:"billing_city"`     // 账单城市
		BillingAddress string `json:"billing_address"`  // 账单地址
		BillingZipCode string `json:"billing_zip_code"` // 账单邮编
		Remark         string `json:"remark"`           // 备注
		CardUserID     int64  `json:"card_user_id"`     // 持卡人Id
		CheckRemark    string `json:"check_remark"`     // 审核备注
	} `json:"data"` // 持卡人信息
}

// CardApplyRequest 开卡申请请求
type CardApplyRequest struct {
	StartDate       string `json:"start_date"`        // 卡生效时间
	EndDate         string `json:"end_date"`          // 卡失效时间
	ChannelType     int    `json:"channel_type"`      // 卡类型 1: 常规卡(默认) 2: 共享卡
	BinRangeID      string `json:"bin_range_id"`      // 卡头
	CardAlias       string `json:"card_alias"`        // 卡别名
	GroupID         int    `json:"group_id"`          // 共享卡卡组id
	ScenarioID      int    `json:"scenario_id"`       // 适用范围
	AreaID          int    `json:"area_id"`           // 发行区域
	AuthLimitAmount int    `json:"auth_limit_amount"` // 充值金额
	Remark          string `json:"remark"`            // 备注
	CardUserID      int64  `json:"card_user_id"`      // 持卡人id
}

// CardApplyResponse 开卡申请响应
type CardApplyResponse struct {
	Ret    bool `json:"ret"`    // 业务结果
	Status int  `json:"status"` // 状态码
	Data   struct {
		UserRepNo        string  `json:"user_rep_no"`        // 请求流水号
		LocalCurrency    string  `json:"local_currency"`     // 开卡币种
		StartDate        string  `json:"start_date"`         // 卡生效日期
		EndDate          string  `json:"end_date"`           // 卡失效日期
		ChannelType      int     `json:"channel_type"`       // 卡类型
		AuthLimitAmount  float64 `json:"auth_limit_amount"`  // 授权额度
		EnableMultiUse   int     `json:"enable_multi_use"`   // 是否多次卡
		CardAlias        string  `json:"card_alias"`         // 卡别名
		BinRangeID       string  `json:"bin_range_id"`       // 卡头
		Status           string  `json:"status"`             // 状态
		Remark           string  `json:"remark"`             // 审核备注
		OrderID          string  `json:"order_id"`           // 服务系统返回的单号
		CardID           string  `json:"card_id"`            // 卡编号
		CardVerifyNo     string  `json:"card_verify_no"`     // 卡cvv
		CardExpiryDate   string  `json:"card_expiry_date"`   // 有效期
		CardNo           string  `json:"card_no"`            // 卡号
		CardImgFront     string  `json:"card_img_front"`     // 卡面正面
		CardImgBack      string  `json:"card_img_back"`      // 卡面背面
		TotalLimitAmount float64 `json:"total_limit_amount"` // 总限制额度
	} `json:"data"` // 开卡信息
}

// CardRechargeRequest 充值请求
type CardRechargeRequest struct {
	CardID      int64  `json:"card_id"`      // 卡id
	TwoPassword string `json:"two_password"` // 二级密码
	Amount      int    `json:"amount"`       // 充值额度
}

// CardRechargeResponse 充值响应
type CardRechargeResponse struct {
	Ret    bool `json:"ret"`    // 业务结果
	Status int  `json:"status"` // 状态码
	Data   struct {
		OrderID string `json:"order_id"` // 系统订单id
		Status  int    `json:"status"`   // 状态
	} `json:"data"` // 结果
}

// CardRefundRequest 卡片退款请求
type CardRefundRequest struct {
	CardID       int64   `json:"cardId" binding:"required"`       // 卡片ID
	RefundAmount float64 `json:"refundAmount" binding:"required"` // 退款金额
	TwoPassword  string  `json:"twoPassword" binding:"required"`  // 二级密码
	Remark       string  `json:"remark,omitempty"`                // 备注
}

// CardRefundResponse 退款响应
type CardRefundResponse struct {
	Ret    bool `json:"ret"`    // 业务结果
	Status int  `json:"status"` // 状态码
	Data   struct {
		OrderID string `json:"order_id"` // 订单id
		Status  int    `json:"status"`   // 状态
	} `json:"data"` // 结果
}
